/*************************************************************************
    > File Name    : Simhash.h
    > Author       : LiuLei
    > Mail         : 2261459486@qq.com 
    > Created Time : 2022年11月29日 星期二 19时46分05秒
 ************************************************************************/

#ifndef __LL_SIMHASH_H__
#define __LL_SIMHASH_H__

#include "Configuration.h"
#include "../../lib/simhash/Simhasher.hpp"


// 因为已经定义过全局变量，所以不需要再次定义
/* const char * const DICT_PATH = getPath("DICT_PATH").c_str() 是危险的 */
/* getPath()返回的是值拷贝的临时变量 */
/* 使用c_str()函数获取的是string内容的指针，但是临时变量会立即销毁导致指针失效 */

/* const string DICT_PATH = getPath("DICT_PATH"); */
/* // 最大概率法(MPSegment: Max Probability)分词所使用的词典路径 */

/* const string HMM_PATH = getPath("HMM_PATH"); */
/* // 隐式马尔科夫模型(HMMSegment: Hidden Markov Model)分词所使用的词典路径 */

/* const string IDF_PATH = getPath("IDF_PATH"); */
/* // IDF路径 */

/* const string STOP_WORD_PATH = getPath("STOP_WORD_PATH"); */
/* // 停用词路径 */

// extern只能够找到源文件中定义的全局变量
/* extern const string DICT_PATH; */
/* extern const string HMM_PATH; */
/* extern const string IDF_PATH; */
/* extern const string STOP_WORD_PATH; */


class Simhash
{
public:
    Simhash();
    ~Simhash();

    bool isEqual(uint64_t ui1, uint64_t ui2);
    uint64_t make(string s);

private:
    simhash::Simhasher      _simhasher;
    size_t                  _topN;
};

#endif
